#ifndef LASER_H
#define LASER_H

#include "GameObject.h"
#include "Activatable.h"
#include "Targetsetable.h"
#include "LaserBehavior.h"
#include "ActivateAbility.h"
#include "BlockMoveAbility.h"
#include "SetTargetAbility.h"

class Laser: public GameObject, public Activatable, public Targetsetable
{
public:
	Laser(unsigned int initialCellX, unsigned int initialCellY);
	virtual ~Laser();

	void Activate();
	void SetDirection(const Direction& direction);
	virtual GameBehavior* GetBehavior();

	virtual void SetTarget(GameObject* target);

protected:

private:
	LaserBehavior behavior;
	Direction wallDirection;
	ActivateAbility* activateAbility;
	BlockMoveAbility* blockMoveAbility;
	SetTargetAbility* setTargetAbility;
};

#endif //LASER_H
